package cn.iocoder.yudao.module.reading.service.community;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.reading.controller.app.community.vo.common.LikeToggleRespVO;
import cn.iocoder.yudao.module.reading.controller.app.community.vo.post.PostCreateReqVO;
import cn.iocoder.yudao.module.reading.controller.app.community.vo.post.PostPageReqVO;
import cn.iocoder.yudao.module.reading.controller.app.community.vo.post.PostRespVO;
import cn.iocoder.yudao.module.reading.controller.app.community.vo.post.PostUpdateReqVO;

/**
 * 社区帖子服务接口
 *
 * @author 芋道源码
 */
public interface CommunityPostService {

    /**
     * 创建帖子
     *
     * @param createReqVO 创建信息
     * @param userId 用户ID
     * @return 帖子ID
     */
    Long createPost(PostCreateReqVO createReqVO, Long userId);

    /**
     * 更新帖子
     *
     * @param updateReqVO 更新信息
     * @param userId 用户ID
     */
    void updatePost(PostUpdateReqVO updateReqVO, Long userId);

    /**
     * 删除帖子
     *
     * @param id 帖子ID
     * @param userId 用户ID
     */
    void deletePost(Long id, Long userId);

    /**
     * 获得帖子详情
     *
     * @param id 帖子ID
     * @param userId 当前用户ID（用于判断点赞状态）
     * @return 帖子详情
     */
    PostRespVO getPost(Long id, Long userId);

    /**
     * 获得帖子分页
     *
     * @param pageReqVO 分页查询
     * @param userId 当前用户ID（用于判断点赞状态）
     * @return 帖子分页
     */
    PageResult<PostRespVO> getPostPage(PostPageReqVO pageReqVO, Long userId);

    /**
     * 切换帖子点赞状态
     *
     * @param postId 帖子ID
     * @param userId 用户ID
     * @return 点赞结果
     */
    LikeToggleRespVO togglePostLike(Long postId, Long userId);

    /**
     * 增加帖子浏览数
     *
     * @param postId 帖子ID
     */
    void incrementViewCount(Long postId);

}
